import pluginVue from 'eslint-plugin-vue'
import js from '@eslint/js'
import globals from 'globals'

export default [
  // 忽略文件
  {
    ignores: [
      'node_modules/**',
      'dist/**',
      'public/**',
      '*.d.ts',
      'auto-imports.d.ts',
      'components.d.ts',
      '*.config.js',
      '*.config.cjs',
      '.eslintrc.cjs'
    ]
  },
  
  // JavaScript 推荐规则
  js.configs.recommended,
  
  // Vue 3 推荐规则
  ...pluginVue.configs['flat/recommended'],
  
  // 全局配置
  {
    languageOptions: {
      ecmaVersion: 'latest',
      sourceType: 'module',
      globals: {
        ...globals.browser,
        ...globals.node,
        ...globals.es2021
      }
    },
    rules: {
      // Vue 相关规则
      'vue/multi-word-component-names': 'off',
      'vue/no-v-html': 'warn',
      'vue/require-default-prop': 'off',
      'vue/require-explicit-emits': 'off',
      'vue/no-required-prop-with-default': 'off',
      'vue/no-template-shadow': 'off',
      'vue/singleline-html-element-content-newline': 'off', // 允许单行元素
      'vue/html-closing-bracket-spacing': 'warn',
      'vue/attributes-order': 'off', // 不强制属性顺序
      'vue/max-attributes-per-line': 'off', // 不限制单行属性数量
      'vue/html-self-closing': 'off', // 不强制自闭合
      'vue/component-name-in-template-casing': ['warn', 'PascalCase', {
        registeredComponentsOnly: false,
        ignores: ['el-image-viewer'] // Element Plus 组件
      }],
      
      // JavaScript 相关规则
      'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
      'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
      'no-unused-vars': ['warn', {
        argsIgnorePattern: '^_',
        varsIgnorePattern: '^_'
      }],
      'no-var': 'error',
      'prefer-const': 'warn',
      'no-multiple-empty-lines': ['warn', { max: 2, maxEOF: 1 }],
      'eqeqeq': ['warn', 'always'],
      'curly': 'off', // 不强制大括号
      'no-undef': 'error'
    }
  }
]

